/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package AccesoDatos.Persistencia.Manager;

import AccesoDatos.Persistencia.Entidad.EPrestamo;
import LogicaNegocio.Biblioteca.Prestamo;
import MainBiblioSoft.BiblioSoft;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceUnit;

/**
 * Metodo constructor, crea un gestor para la persistencia de Prestamo
 * recibe como argumento el nombre de la unidad de persistencia.
 *
 * @author sebaxtian
 * Archivo: ManagerPrestamo.java
 * @version 1.0
 * Fecha: mié may  5 01:43:15 COT 2010
 */


public class ManagerPrestamo {

    @PersistenceUnit
    private EntityManagerFactory managerFactory;
    private EntityManager entityManager;

    /**
     * Metodo constructor, crea un gestor para la persistencia de Prestamo
     * 
     */
    public ManagerPrestamo() {
        managerFactory = BiblioSoft.managerFactory;
        entityManager = managerFactory.createEntityManager();
    }

    /**
     * Metodo encargado de la persistencia en la entidad Prestamo
     * de un objeto Prestamo
     *
     * @param prestamo
     */
    public void crearPrestamo(Prestamo prestamo) {
        entityManager.clear();
        EPrestamo entidadPrestamo = new EPrestamo();
        entidadPrestamo.setCedulaempleado(prestamo.getCedulaBibliotecario());
        entidadPrestamo.setIdorden(prestamo.getIdOrden());
        entidadPrestamo.setFechaentrega(prestamo.getFechaEntrega());
        entidadPrestamo.setDevuelto(prestamo.getDevuelto());
        EntityTransaction transaccion = entityManager.getTransaction();
        transaccion.begin();
        entityManager.persist(entidadPrestamo);
        transaccion.commit();
        entityManager.clear();
    }

    public void devolverPrestamo(int idPrestamo) {
        entityManager.clear();
        EPrestamo entidadPrestamo;
        EntityTransaction transaccion = entityManager.getTransaction();
        transaccion.begin();
        entidadPrestamo = entityManager.find(EPrestamo.class, idPrestamo);
        transaccion.commit();
        if(entidadPrestamo != null){
            entidadPrestamo.setDevuelto(true);
            transaccion.begin();
            entityManager.merge(entidadPrestamo);
            transaccion.commit();
        }
        entityManager.clear();
    }

    public Prestamo obtenerPrestamo(int idPrestamo) {
        entityManager.clear();
        EPrestamo entidadPrestamo;
        Prestamo prestamo = null;
        EntityTransaction transaccion = entityManager.getTransaction();
        transaccion.begin();
        entidadPrestamo = entityManager.find(EPrestamo.class, idPrestamo);
        transaccion.commit();
        if(entidadPrestamo != null){
            prestamo = new Prestamo();
            prestamo.setIdPrestamo(entidadPrestamo.getIdprestamo());
            prestamo.setIdOrden(entidadPrestamo.getIdorden());
            prestamo.setCedulaBibliotecario(entidadPrestamo.getCedulaempleado());
            prestamo.setFechaEntrega(entidadPrestamo.getFechaentrega());
            prestamo.setDevuelto(entidadPrestamo.getDevuelto());
        }
        entityManager.clear();
        return prestamo;
    }
}
